﻿using System;
using Infrastructure;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Data.Entity;
using DomainModel;

namespace ManagerUnitTest
{
    [TestClass]
    public class UserUnitTest
    {
        private TestContext testContextInstance;


        static IManager.IManagerUser IMUser;


        /// <summary>
        ///获取或设置测试上下文，上下文提供
        ///有关当前测试运行及其功能的信息。
        ///</summary>
        public TestContext TestContext
        {
            get
            {
                return testContextInstance;
            }
            set
            {
                testContextInstance = value;
            }
        }

        #region 附加测试特性
        // 
        //编写测试时，还可使用以下特性:
        //
        //使用 ClassInitialize 在运行类中的第一个测试前先运行代码
        [ClassInitialize()]
        public static void MyClassInitialize(TestContext testContext)
        {
            Database.SetInitializer<EFDBContext>(null);
            IMUser = new Manager.ManagerUser()
            {
                //IDAUser = new DataAccess.DataAccessUser()
            };
        }
        //
        //使用 ClassCleanup 在运行完类中的所有测试后再运行代码
        [ClassCleanup()]
        public static void MyClassCleanup()
        {
            
            IMUser = null;
        }
        //
        //使用 TestInitialize 在运行每个测试前先运行代码
        //[TestInitialize()]
        //public void MyTestInitialize()
        //{
        //}
        //
        //使用 TestCleanup 在运行完每个测试后运行代码
        //[TestCleanup()]
        //public void MyTestCleanup()
        //{
        //}
        //
        #endregion



        [TestMethod]
        public void GetUserByIDTest()
        {
            var u = IMUser.GetUser(1);

            Assert.AreNotEqual(null, u);
        }


        [TestMethod]
        public void GetUserByLoginNameTest()
        {
            var u = IMUser.GetUser("admin");

            Assert.AreNotEqual(null, u);
        }


        [TestMethod]
        public void ChangePasswordTest()
        {
            var u = IMUser.ChangePassword(1, "123456");

            Assert.AreNotEqual(false, u);
        }



        [TestMethod]
        public void AddUserTest()
        {
            var n = IMUser.AddUser(new UserInfo() { 
                LoginDateTime = DateTime.Now,
                LoginIP ="127.0.0.1",
                LoginName = "testUser",
                LoginPassword = "123",
                UserName = "TestUser"
            });

            Assert.AreNotEqual(false, n);
        }


        [TestMethod]
        public void DeleteUserTest()
        {
            var u = IMUser.GetUser("testUser");

            if (u == null)
            {
                Assert.Fail("未获取到用户信息");
            }

            var b = IMUser.DeleteUser(u.UserID);

            Assert.AreNotEqual(false, b);
        }

    }
}
